package com.powernobug.bean.vo;

import com.fasterxml.jackson.annotation.JsonInclude;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;


/**
 * @Author: 肖云戈
 * @CreateTime: 2024-08-16
 * @Description:
 */
@Data
@AllArgsConstructor
@NoArgsConstructor
public class BaseRespVo<T> {

    private int errno;
    @JsonInclude(JsonInclude.Include.NON_NULL)
    private T data;
    private String errMsg;

    public static BaseRespVo okList(Object obj){
        BaseRespVo ok = new BaseRespVo<>();
        ok.errno = 0;
        ok.data = obj;
        ok.errMsg = "成功";
        return ok;
    }

    public static BaseRespVo errList(int errno){
        BaseRespVo error = new BaseRespVo<>();
        error.errno = errno;
        error.data = null;
        switch (errno) {
            // .set()
            case 402 -> error.setErrMsg("请求参数错误！");
            case 403 -> error.setErrMsg("参数类型错误！");
            case 404 -> error.setErrMsg("Not Found");
            case 501 -> error.setErrMsg("请登录！");
            case 502 -> error.setErrMsg("系统内部错误！");
            case 604 -> error.setErrMsg("该用户帐号不存在！");
            case 602 -> error.setErrMsg("该订单无法发货！");
            case 603 -> error.setErrMsg("图片无法删除！！");
            case 605 -> error.setErrMsg("用户帐密码不正确！");
            case 606 -> error.setErrMsg("图片信息更新错误！");
            case 607 -> error.setErrMsg("上传的文件非图片！");
            case 608 -> error.setErrMsg("图片上传发生错误！");
            case 609 -> error.setErrMsg("无法找到该图片！");
            case 623 -> error.setErrMsg("该订单不能删除！");
            case 701 -> error.setErrMsg("商品信息缺少必选项！");
            case 703 -> error.setErrMsg("商品上架失败！");
            case 801 -> error.setErrMsg("管理员编辑失败！");
            case 802 -> error.setErrMsg("管理员删除失败！");
            default -> error.errMsg = "未知错误: " + errno;  // 默认处理未知错误码
        }
        return error;
    }

    public static <T> BaseRespVo<T> ok(T data) {
        BaseRespVo<T> baseRespVo = new BaseRespVo<>();
        baseRespVo.setErrMsg("成功");
        baseRespVo.setErrno(0);
        baseRespVo.setData(data);
        return baseRespVo;
    }

    public static BaseRespVo authFail() {
        BaseRespVo baseRespVo = new BaseRespVo<>();
        baseRespVo.setErrMsg("用户帐号或密码不正确");
        baseRespVo.setErrno(605);
        return baseRespVo;
    }

    public static BaseRespVo unAuth() {
        BaseRespVo baseRespVo = new BaseRespVo<>();
        baseRespVo.setErrMsg("请登录");
        baseRespVo.setErrno(501);
        return baseRespVo;
    }

    public static BaseRespVo badArgs() {
        BaseRespVo baseRespVo = new BaseRespVo<>();
        baseRespVo.setErrMsg("请提供正确参数");
        baseRespVo.setErrno(400);
        return baseRespVo;
    }
    public static BaseRespVo undelete() {
        BaseRespVo baseRespVo = new BaseRespVo<>();
        baseRespVo.setErrMsg("订单不能删除");
        baseRespVo.setErrno(623);
        return baseRespVo;
    }
}
